﻿namespace checc_baseTools.CaveMouth.Entity
{

    public class CommonHeadFall : MyNotifyPropertyChanged
    {
        public CommonHeadFall() { }
        HeadFallBase _leftHeadFall = new HeadFallBase();
        HeadFallBase _rightHeadFall = new HeadFallBase();

        /// <summary>
        /// 左侧跌水
        /// </summary>
        public HeadFallBase LeftHeadFall
        {
            get
            {
                return _leftHeadFall;
            }
            set
            {
                if (value == _leftHeadFall)
                    return;
                _leftHeadFall = value;
                NotifyPropertyChanged(() => LeftHeadFall);
            }
        }

        /// <summary>
        /// 右侧跌水
        /// </summary>
        public HeadFallBase RightHeadFall
        {
            get
            {
                return _rightHeadFall;
            }
            set
            {
                if (value == _rightHeadFall)
                    return;
                _rightHeadFall = value;
                NotifyPropertyChanged(() => RightHeadFall);
            }
        }
    }

    public class HeadFallBase : MyNotifyPropertyChanged
    {
        private double _angleFlare = 20;// 扩散角
        private double _endlongSlope = -0;// 洞口纵坡
        private double _sideWidth = 0.00/*0.50 *10*/;// 洞口侧加宽
        private double _cutoffWallThickness = 40/*0.4 * 10*/;// 截水墙厚度
        private double _paveBottomThickness = 40/*0.4 * 10*/;// 铺底厚度
        private double _height = 0 /*0 * 10*/;// 跌水高度
        private double _paveLength = 400/*4.0 * 10*/;// 铺砌长度
        private double _cutoffWallHeight = 60/*0.60 * 10*/;// 截水墙高度
        private double _gutterwayDepth = 100/*1.0 * 10*/;// 排水沟深度
        private double _gutterrwayWallWidth = 20/*0.2 * 10*/;// 排水沟壁宽
        private double _gutterwaySlopeRatio = 0.17/*0.15 * 10*/;// 排水沟坡比

        public HeadFallBase() { }

        public HeadFallBase(double AngleFlare, double EndlongSlope, double SideWidth, double CutoffWallThickness, double PaveBottomThickness, double Height, double PaveLength, double CutoffWallHeight, double GutterwayDepth, double GutterrwayWallWidth, double GutterwaySlopeRatio)
        {
            _angleFlare = AngleFlare;
            _endlongSlope = EndlongSlope;
            _sideWidth = SideWidth;
            _cutoffWallThickness = CutoffWallThickness;
            _paveBottomThickness = PaveBottomThickness;
            _height = Height;
            _paveLength = PaveLength;
            _cutoffWallHeight = CutoffWallHeight;
            _gutterwayDepth = GutterwayDepth;
            _gutterrwayWallWidth = GutterrwayWallWidth;
            _gutterwaySlopeRatio = GutterwaySlopeRatio;
        }
        #region 跌水属性
        /// <summary>
        /// 扩散角
        /// </summary>
        public double AngleFlare
        {
            get
            {
                return _angleFlare;
            }
            set
            {
                if (value == _angleFlare)
                    return;
                _angleFlare = value;
                NotifyPropertyChanged(() => AngleFlare);
            }
        }
        /// <summary>
        /// 洞口纵坡
        /// </summary>
        public double EndlongSlope
        {
            get
            {
                return _endlongSlope;
            }
            set
            {
                if (value == _endlongSlope)
                    return;
                _endlongSlope = value;
                NotifyPropertyChanged(() => EndlongSlope);
            }
        }
        /// <summary>
        /// 洞口侧加宽
        /// </summary>
        public double SideWidth
        {
            get
            {
                return _sideWidth;
            }
            set
            {
                if (value == _sideWidth)
                    return;
                _sideWidth = value;
                NotifyPropertyChanged(() => SideWidth);
            }
        }
        /// <summary>
        /// 截水墙厚度
        /// </summary>
        public double CutoffWallThickness
        {
            get
            {
                return _cutoffWallThickness;
            }
            set
            {
                if (value == _cutoffWallThickness)
                    return;
                _cutoffWallThickness = value;
                NotifyPropertyChanged(() => CutoffWallThickness);
            }
        }
        /// <summary>
        /// 铺底厚度
        /// </summary>
        public double PaveBottomThickness
        {
            get
            {
                return _paveBottomThickness;
            }
            set
            {
                if (value == _paveBottomThickness)
                    return;
                _paveBottomThickness = value;
                NotifyPropertyChanged(() => PaveBottomThickness);
            }
        }
        /// <summary>
        /// 跌水高度
        /// </summary>
        public double Height
        {
            get
            {
                return _height;
            }
            set
            {
                if (value == _height)
                    return;
                _height = value;
                NotifyPropertyChanged(() => Height);
            }
        }
        /// <summary>
        /// 铺砌长度
        /// </summary>
        public double PaveLength
        {
            get
            {
                return _paveLength;
            }
            set
            {
                if (value == _paveLength)
                    return;
                _paveLength = value;
                NotifyPropertyChanged(() => PaveLength);
            }
        }
        /// <summary>
        /// 截水墙高度
        /// </summary>
        public double CutoffWallHeight
        {
            get
            {
                return _cutoffWallHeight;
            }
            set
            {
                if (value == _cutoffWallHeight)
                    return;
                _cutoffWallHeight = value;
                NotifyPropertyChanged(() => CutoffWallHeight);
            }
        }
        /// <summary>
        /// 排水沟深度
        /// </summary>
        public double GutterwayDepth
        {
            get
            {
                return _gutterwayDepth;
            }
            set
            {
                if (value == _gutterwayDepth)
                    return;
                _gutterwayDepth = value;
                NotifyPropertyChanged(() => GutterwayDepth);
            }
        }
        /// <summary>
        /// 排水沟壁宽
        /// </summary>
        public double GutterrwayWallWidth
        {
            get
            {
                return _gutterrwayWallWidth;
            }
            set
            {
                if (value == _gutterrwayWallWidth)
                    return;
                _gutterrwayWallWidth = value;
                NotifyPropertyChanged(() => GutterrwayWallWidth);
            }
        }
        /// <summary>
        /// 排水沟坡比
        /// </summary>
        public double GutterwaySlopeRatio
        {
            get
            {
                return _gutterwaySlopeRatio;
            }
            set
            {
                if (value == _gutterwaySlopeRatio)
                    return;
                _gutterwaySlopeRatio = value;
                NotifyPropertyChanged(() => GutterwaySlopeRatio);
            }
        }
        #endregion
    }
}
